package com.gitee.sop.layui.adminserver.module.background.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gitee.sop.layui.adminserver.module.background.admin.entity.SysMenuRole;
import com.gitee.sop.layui.adminserver.module.base.bo.ZTreeNode;

import java.util.List;
import java.util.Map;

/**
 * com.zch.admin.base.entity.SysRole模型业务接口
 *
 * @author: admin
 * @date: 2019-11-13
 * @version: 1.0.0
 */
public interface SysMenuRoleService extends IService<SysMenuRole> {
    /**
     * 添加菜单角色
     *
     * @param parentId    父节点id
     * @param sysMenuRole 角色信息
     */
    void add(int parentId, SysMenuRole sysMenuRole);

    /**
     * 获取指定名称角色
     *
     * @param name
     * @return
     */
    SysMenuRole getOneByName(String name);

    /**
     * 删除指定角色
     *
     * @param id 角色id
     */
    void deleteSelfAndChildrenById(int id);

    /**
     * 删除指定应用的指定菜单角色
     *
     * @param appId            应用id
     * @param menuRoleUuidList 菜单决定uuid列表
     */
    void deleteInUuid(String appId, List<String> menuRoleUuidList);

    /**
     * 查询指定用户的角色信息
     *
     * @param userUuid 用户id
     * @param appId    应用id ，可为空，则查询当前应用
     * @return
     */
    List<ZTreeNode> searchTreeByUserUuid(String userUuid, String appId);

    /**
     * 获取指定用户创建的角色
     *
     * @param appId 应用id
     * @return
     */
    List<Map<String, Object>> getListForCurUser(String appId);

    /**
     * 获取指定uuid的角色信息
     *
     * @param uuid
     * @return
     */
    SysMenuRole getOneByUuid(String uuid);

    /**
     * 获取指定id的菜单角色
     *
     * @param idList id列表
     * @param appId  应用id ，可为空，则查询当前应用
     * @return
     */
    List<SysMenuRole> getListByIds(String appId, List<Integer> idList);

    /**
     * 获取指定条件的菜单角色
     *
     * @param appId                  应用id
     * @param treeGroup              树分组
     * @param treeLeftTraverseNumber 树左遍历序号
     * @return
     */
    SysMenuRole getOneBy(String appId, String treeGroup, Integer treeLeftTraverseNumber);

    /**
     * 获取指定应用的菜单角色信息
     *
     * @param appId 应用id
     * @return
     */
    List<SysMenuRole> getListByAppId(String appId);
}